home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok59.lha / AmokEd_V1.02b / txt / Printf.lzh / Printf / TXT / Printf.mod < prev    next >
Text File  |  1991-01-25  |  3KB  |  91 lines

  1. (*
  2.   :Program.       Printf
  3.   :Author.        Volker Rudolph
  4.   :Address.       Lettow-Vorbeck-Str. 11 / 6750 Kaiserslautern
  5.   :Phone.         06301/8566
  6.   :Version.       1.2
  7.   :Date.          7.3.1990
  8.   :Copyright.     PD
  9.   :Language.      Assembler / Oberon
  10.   :Translator.    A68k / Amiga-Oberon V1.17.1
  11.   :Contents.      Allzweck-Textausgabe in Form der C-Funktion Printf
  12.   :Usage.         Aufruf und Parameter wie in C
  13. *)
  14.  
  15. MODULE Printf;
  16.  
  17. IMPORT d:Dos;
  18.  
  19. CONST
  20.   (* Größe des Ausgabepuffers *)
  21.   (* Der Ausgabestring darf nicht länger sein *)
  22.   bufSize * = 120;
  23.  
  24. TYPE
  25.   (* Man kann jede Funktion dieses Typs als Ausgabeprozedur angeben *)
  26.   WriteProcType * = PROCEDURE(str:ARRAY OF CHAR);
  27.  
  28. VAR
  29.   (* Ausgabeprozedur *)
  30.   writeProc * :WriteProcType;
  31.  
  32. (* --------------------------------------------------------------- *)
  33.  
  34. PROCEDURE Printf0*{"Printf.Printf0"}(str:ARRAY OF CHAR);
  35. PROCEDURE Printf1*{"Printf.Printf1"}(str:ARRAY OF CHAR;val1:LONGINT);
  36. PROCEDURE Printf2*{"Printf.Printf2"}(str:ARRAY OF CHAR;val1,val2:LONGINT);
  37. PROCEDURE Printf3*{"Printf.Printf3"}(str:ARRAY OF CHAR;val1,val2,val3:LONGINT);
  38. PROCEDURE Printf4*{"Printf.Printf4"}(str:ARRAY OF CHAR;val1,val2,val3,val4:LONGINT);
  39. PROCEDURE Printf5*{"Printf.Printf5"}(str:ARRAY OF CHAR;val1,val2,val3,val4,val5:LONGINT);
  40. PROCEDURE Printf6*{"Printf.Printf6"}(str:ARRAY OF CHAR;val1,val2,val3,val4,val5,val6:LONGINT);
  41.  
  42. PROCEDURE SPrintf0 * {"Printf.SPrintf0"}
  43.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR);
  44. PROCEDURE SPrintf1 * {"Printf.SPrintf1"}
  45.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;val1:LONGINT);
  46. PROCEDURE SPrintf2 * {"Printf.SPrintf2"}
  47.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;val1,val2:LONGINT);
  48. PROCEDURE SPrintf3 * {"Printf.SPrintf3"}
  49.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;val1,val2,val3:LONGINT);
  50. PROCEDURE SPrintf4 * {"Printf.SPrintf4"}
  51.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;val1,val2,val3,val4:LONGINT);
  52. PROCEDURE SPrintf5 * {"Printf.SPrintf5"}
  53.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;val1,val2,val3,val4,val5:LONGINT);
  54. PROCEDURE SPrintf6 * {"Printf.SPrintf6"}
  55.   (VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;val1,val2,val3,val4,val5,val6:LONGINT);
  56.  
  57. (* ---------------------------------------------------------------- *)
  58.  
  59. (* $RangeChk- $OvflChk- $NilChk- $CopyArrays- *)
  60. PROCEDURE WriteString*(str:ARRAY OF CHAR);
  61. VAR
  62.   i:LONGINT;
  63.   out:d.FileHandlePtr;
  64. BEGIN
  65.   i := 0;
  66.   WHILE (i < LEN(str)) AND (str[i] # 0X) DO INC(i) END;
  67.   out := d.Output();
  68.   IF (out = NIL) OR
  69.      (d.Write(out,str,i) # i) THEN
  70.     HALT(20)
  71.   END; (* END *)
  72. END WriteString;
  73.  
  74. PROCEDURE WriteLn*;
  75. BEGIN
  76.   writeProc("\n");
  77. END WriteLn;
  78.  
  79. (* Hilfs-Prozedur, die von den Assembler-Routinen aufgerufen wird *)
  80. (* $CopyArrays- *)
  81. PROCEDURE WriteProc*(str:ARRAY OF CHAR);
  82. BEGIN
  83.   writeProc(str);
  84. END WriteProc;
  85.  
  86. (* ---------------------------------------------------------------- *)
  87.  
  88. BEGIN
  89.   writeProc := WriteString;
  90. END Printf.
  91.